import argparse

'''
training settings

metavar参数，用来控制部分命令行参数的显示
'''
parser = argparse.ArgumentParser(description='PyTorch Example for all')
'''
train part
'''
parser.add_argument('--train-batch-size', type=int, default=32, metavar='N',
                    help='input batch size for training (default: 32)'
                         '一般对于GPU选择2的次方的batch可以更好的发挥性能。所以一般选择32、64、256。')
parser.add_argument('--test-batch-size', type=int, default=64, metavar='N',
                    help='input batch size for testing (default: 64)')
parser.add_argument('--freeze_epoch', type=int, default=0,
                    help="前10个epoch，冻结modeling的backbone")
parser.add_argument('--epoches', type=int, default=200, metavar='N',
                    help='number of epochs to train (default: 10)')
parser.add_argument('--lr', type=float, default=0.0001, metavar='LR',
                    help='learning rate (default: 0.001),学习率太大会造成梯度爆炸')
parser.add_argument('--is_save', type=bool, default=False,
                    help="是否保存")
parser.add_argument('--momentum', type=float, default=0.9, metavar='M',
                    help='SGD momentum (default: 0.9)')
parser.add_argument('--label_smooth', type=float, default=0.01,
                    help='使用标签平滑，一定程度的减小过拟合')
parser.add_argument('--seed', type=int, default=123, metavar='S',
                    help='random seed 设置种子的用意是一旦固定种子，后面依次生成的随机数其实都是固定的,有利于实验结果的产生与比较')
parser.add_argument('--use_cuda', type=bool, default=True,
                    help='whether to use cuda to accerlate')
parser.add_argument('--base_data_path', type=str, default='E:/Datasets2/cat_dog/sort/Images/',
                    help="total base data path for training")
parser.add_argument('--resume', type=bool, default=False, metavar='R',
                    help="whether to use the pretrained model to start the train")
parser.add_argument('--saved_model', type=str, default="E:/Fininsh_Task/trained_model/",
                    help="the path to store the weight")
parser.add_argument('--val_num', type=float, default=0.3,
                    help="percentage of validate data")
parser.add_argument('--save', type=bool, default=True,
                    help="whether to save the model weight")
parser.add_argument('--project_name', type=str, default='transformer based 分类算法实验',
                    help="该项目的工程名称")
parser.add_argument('--use_aug', type=bool, default=True,
                    help='使用数据增广,增加数据多样性，目前仅限于水平竖向的翻转')
parser.add_argument('--image_size', type=int, default=224, choices=[224, 384],
                    help='图片大小')

parser.add_argument('--patch_size', type=int, default=9,
                    help="图片分割块的数量")
parser.add_argument('--num_class', type=int, default=2,
                    help="分类数量")
parser.add_argument('--emb_dim', type=int, default=16,
                    help="位置嵌入维度")
parser.add_argument('--mlp_dim', type=int, default=32)
parser.add_argument('--num_heads', type=int, default=9)
parser.add_argument('--num_layers', type=int, default=3)
parser.add_argument('--attn_dropout_rate', type=float, default=0.0)
parser.add_argument('--dropout_rate', type=float, default=0.1)
parser.add_argument('--weight_decay', type=float, default=0)
parser.add_argument("--local_rank",type=int,default=-1)

'''
inference part
'''
parser.add_argument('--pretrained_weight', type=str, default="E:/完成工作/trained_model/",
                    help="the path to load the pytorch weight(.pth)")
